home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / phagexsources.lha / codesegments / InterCircles-Seg.s < prev    next >
Encoding:
Text File  |  1993-08-21  |  4.8 KB  |  359 lines

  1.     Opt    c-
  2.     Section    "Interference Circles Segment",Code_c
  3.  
  4. Start    Lea    SineDataPt(pc),a6
  5.     Move.l    a0,(a6)+
  6.     Move.l    a1,(a6)
  7.     Lea    CopperList(pc),a0 
  8.     Move.l    a0,$Dff080
  9.     Bsr    DoXYSine
  10. SetCircle    Lea    CopperBPLS(pc),a0
  11.     Lea    CopperPos(pc),a1
  12.     Move.l    CircleGFXPt(pc),a2
  13.     Lea    CircleXYPos(pc),a3
  14.     Lea    CopperModA(pc),a5
  15.     Move.w    #0,2(a1)
  16.     Bsr    DoCircle
  17.     Or.w    d1,2(a1)
  18.     Lea    CopperModB(pc),a5
  19.     Lea    CopperBPLS1(pc),a0
  20.     Lea    CopperPos(pc),a1
  21.     Move.l    CircleGFXPt(pc),a2
  22.     Lea    CircleXYPosa(pc),a3
  23.     Bsr    DoCircle
  24.     Asl.w    #4,d1
  25.     Or.w    d1,2(a1)
  26.     Bsr    SetPriority
  27.     Rts
  28.     
  29. DoCircle    Moveq    #0,d0
  30.     Moveq    #0,d2
  31.     Moveq    #0,d3
  32.     Moveq    #0,d4
  33.     
  34.     Move.w    2(a3),d4
  35.     Move.w    #271-16,d0
  36.     Sub.w    d4,d0
  37.     
  38.     Bsr    SetWait
  39.     Move.w    2(a3),d0
  40.     Add.w    #32,d0
  41.     Move.l    #64,d1
  42.     Muls    d0,d1
  43.     Add.l    d1,a2
  44.     
  45.     Move.w    0(a3),d0
  46.     Add.w    #5,d0
  47.     Asr.w    #3,d0
  48.     Bclr    #0,d0
  49.     Add.l    d0,a2
  50.     Move.w    0(a3),d0
  51.     Add.w    #5,d0
  52.     And.w    #15,d0
  53.     Move.w    #15,d1
  54.     Sub.w    d0,d1
  55.     Move.w    d1,d0
  56.     And.w    #15,d0
  57.     Move.w    d0,d1    
  58.     Move.l    a2,d0
  59.     Move.w    d0,6(a0)
  60.     Move.w    d0,14(a0)
  61.     Swap    d0
  62.     Move.w    d0,2(a0)
  63.     Move.w    d0,10(a0)
  64.     Rts
  65.  
  66. SetWait    Cmpi.w    #$100,d0
  67.     Bls    NoPalCopper
  68.     Move.l    #$ffe1fffe,(a5)
  69.     Sub.w    #$100,d0
  70.     Move.b    d0,4(a5)
  71.     Rts
  72. NoPalCopper    Move.l    #$01fc0000,(a5)
  73.     Move.b    d0,4(a5)    
  74.     Rts
  75.     
  76. SetPriority    Lea    CopperModA(pc),a0
  77.     Move.w    CircleXYPos+2(pc),d0
  78.     Move.w    CircleXYPosa+2(pc),d1
  79.     
  80.     Cmp.w    d0,d1
  81.     Ble    NoChange
  82.     
  83.     Move.l    00(a0),d0
  84.     Move.l    04(a0),d1
  85.     Move.l    12(a0),00(a0)
  86.     Move.l    16(a0),04(a0)
  87.     Move.l    d0,12(a0)
  88.     Move.l    d1,16(a0)
  89.     Move.l    #$010aff92,08(a0)
  90.     Move.l    #$0108ff92,20(a0)
  91.     Rts
  92. NoChange    Move.l    #$0108ff92,08(a0)
  93.     Move.l    #$010aff92,20(a0)
  94.     Rts
  95.     
  96. DoXYSine    Lea    CircleXYPos(pc),a4
  97.     Move.l    SineDataPt(pc),a5
  98.     Move.l    #1500,d7
  99.     Bsr    DoSine
  100.     Move.w    d3,(a4)
  101.     Lea    CircleXYPos+2(pc),a4
  102.     Move.l    SineDataPt(pc),a5
  103.     Add.l    #16,a5
  104.     Move.l    #1100,d7
  105.     Bsr    DoSine
  106.     Sub.w    #58,d3
  107.     Move.w    d3,(a4)
  108.     Lea    CircleXYPos(pc),a4
  109.     And.w    #511,0(a4)
  110.     And.w    #511,2(a4)
  111.     Lea    CircleXYPosa(pc),a4
  112.     Move.l    SineDataPt(pc),a5
  113.     Add.l    #32,a5
  114.     Move.l    #1500,d7
  115.     Bsr    DoSine
  116.     Move.w    d3,(a4)
  117.     Lea    CircleXYPosa+2(pc),a4
  118.     Move.l    SineDataPt(pc),a5
  119.     Add.l    #48,a5
  120.     Move.l    #1100,d7
  121.     Bsr    DoSine
  122.     Sub.w    #58,d3
  123.     Move.w    d3,(a4)
  124.     Lea    CircleXYPosa(pc),a4
  125.     And.w    #511,0(a4)
  126.     And.w    #511,2(a4)
  127.     Rts
  128.  
  129. DoSine    Lea    SineData(pc),a6
  130.     Moveq    #0,d2
  131.     Moveq    #0,d3
  132.     Move.l    08(a5),d0
  133.     Move.l    12(a5),d1
  134.     Add.l    d0,00(a5)
  135.     Add.l    d1,04(a5)
  136.     And.l    #$ffe,00(a5)    
  137.     And.l    #$ffe,04(a5)    
  138.     Move.l    00(a5),d0
  139.     Move.l    04(a5),d1    
  140.     Move.w    (a6,d0.l),d2
  141.     Move.w    (a6,d1.l),d3    
  142.     Add.l    d2,d3    
  143.     Asr.w    #3,d3
  144.     Add.w    #2416,d3
  145.     
  146.     Muls    #1000,d3
  147.     Divs    d7,d3
  148.     Rts        
  149.  
  150. SineDataPt    Dc.l    0
  151. CircleGFXPt    Dc.l    0
  152. CircleXYPos    Dc.w    0
  153.     Dc.w    0
  154. CircleXYPosa    Dc.w    0
  155.     Dc.w    0
  156.  
  157. Cmv    Macro
  158.     Dc.w    \2,\1
  159.     EndM
  160.     
  161. Cwt    Macro
  162.     Dc.w    (\1*$100)+$01,$fffe
  163.     EndM    
  164.     
  165. Pal    Macro
  166.     Dc.w    $ffe1,$fffe
  167.     EndM    
  168.  
  169. EndCop    Macro
  170.     Dc.w    $ffff,$fffe
  171.     EndM    
  172.  
  173. CopperList    Cwt    $15    
  174.     Cmv    $0200,BplCon0    
  175. CopperPos    Cmv    $00bb,BplCon1    
  176.     Cmv    $000a,BplCon2    
  177.     Cmv    $1661,DiwStrt    
  178.     Cmv    $36f1,DiwStop
  179.     Cmv    $0028,DdfStrt    
  180.     Cmv    $00d8,DdfStop    
  181.     Cmv    $0012,BplMod1
  182.     Cmv    $0012,BplMod2
  183.     
  184.     Cwt    $1f            
  185. CopperBPLS    Cmv    $c,BplPt0h    
  186.     Cmv    $0,BplPt0l    
  187.     Cmv    $c,BplPt2h    
  188.     Cmv    $0,BplPt2l    
  189. CopperBPLS1    Cmv    $0,BplPt1h    
  190.     Cmv    $0,BplPt1l    
  191.     Cmv    $0,BplPt3h    
  192.     Cmv    $0,BplPt3l    
  193.  
  194.     Cwt    $20
  195.     Cmv    $4200,BplCon0    
  196.     
  197. CopperModA    Cmv    $0,$1fe
  198.     Cwt    $28
  199.     Cmv    $ff92,BplMod1
  200. CopperModB    Cmv    $0,$1fe
  201.     Cwt    $28
  202.     Cmv    $ff92,BplMod2    
  203. CopperPal    Pal
  204.     Cwt    $38
  205.     Cmv    $8010,$09c
  206.     EndCop
  207.  
  208. SineData    Incbin    Df1:SysData/Sine1024Bs.Dat
  209.     Incbin    Df1:SysData/Sine1024Bs.Dat
  210.  
  211. ****Custom Chip Registers****
  212.  
  213. Hardware    = $Dff000
  214.  
  215. ;Control Registers
  216.  
  217. Dmaconr    = $002
  218. Vposr    = $004
  219. Vhposr    = $006
  220. Joy0dat    = $00A
  221. Joy1dat    = $00C
  222. Clxdat    = $00E
  223. Intenar    = $01C
  224. Intereqr    = $01E
  225. Copcon    = $02E
  226.  
  227. ;Blitter Registers
  228.  
  229. Bltcon0    = $040
  230. Bltcon1    = $042
  231. Bltafwm    = $044
  232. Bltalwm    = $046
  233. Bltcpth    = $048
  234. Bltcptl    = $04A
  235. Bltbpth    = $04C
  236. Bltbptl    = $04E
  237. Bltapth    = $050
  238. Bltaptl    = $052
  239. Bltdpth    = $054
  240. Bltdptl    = $056
  241. Bltsize    = $058
  242. Bltcmod    = $060
  243. Bltbmod    = $062
  244. Bltamod    = $064
  245. Bltdmod    = $066
  246. Bltcdat    = $070
  247. Bltbdat    = $072
  248. Bltadat    = $074
  249.  
  250. ;Copper Registers
  251.  
  252. Cop1lc    = $080
  253. Cop1lch    = $080
  254. Cop1lcl    = $082
  255. Cop2lc    = $084
  256. Cop2lch    = $084
  257. Cop2lcl    = $086
  258. Copjmp1    = $088
  259. Copjmp2    = $08A
  260. Diwstrt    = $08E
  261. Diwstop    = $090
  262. Ddfstrt    = $092
  263. Ddfstop    = $094
  264. Dmacon    = $096
  265. Clxcon    = $098
  266. Intena    = $09A
  267. Intreq    = $09C
  268.  
  269. ;BitPlane Registers 
  270.  
  271. BplCon0    = $100
  272. BplCon1    = $102
  273. BplCon2    = $104
  274. BplMod1    = $108
  275. BplMod2    = $10a
  276.  
  277. BplPt0h    = $0e0
  278. BplPt0l    = $0e2
  279. BplPt1h    = $0e4
  280. BplPt1l    = $0e6
  281. BplPt2h    = $0e8
  282. BplPt2l    = $0ea
  283. BplPt3h    = $0ec
  284. BplPt3l    = $0ee
  285. BplPt4h    = $0f0
  286. BplPt4l    = $0f2
  287. BplPt5h    = $0f4
  288. BplPt5l    = $0f6
  289.  
  290. ;Colour Registers
  291.  
  292. Color00    = $180
  293. Color01    = $182
  294. Color02    = $184
  295. Color03    = $186
  296. Color04    = $188
  297. Color05    = $18a
  298. Color06    = $18c
  299. Color07    = $18e
  300. Color08    = $190
  301. Color09    = $192
  302. Color10    = $194
  303. Color11    = $196
  304. Color12    = $198
  305. Color13     = $19a
  306. Color14     = $19c
  307. Color15     = $19e
  308. Color16     = $1a0
  309. Color17     = $1a2
  310. Color18     = $1a4
  311. Color19     = $1a6
  312. Color20     = $1a8
  313. Color21     = $1aa
  314. Color22     = $1ac
  315. Color23     = $1ae
  316. Color24     = $1b0
  317. Color25     = $1b2
  318. Color26     = $1b4
  319. Color27     = $1b6
  320. Color28     = $1b8
  321. Color29     = $1ba
  322. Color30     = $1bc
  323. Color31     = $1be
  324.  
  325. EcsNop    = $1fe
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.